﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;

namespace Common
{
    public partial class Options : Form
    {
        // Region common
        SqlConnection conn;
        CommonDO cmDo = new CommonDO();
        string sResult = "";

        // Region Don Vi
        DataTable tbDonVi;
        string sDonViIdOld = "";


        // Region Linh Vuc
        DataTable tbLinhVuc;
        string sLinhVucIDOld = "";

        // Regiion Nhom San Pham
        DataTable tbNhomSP;
        string sNhomSPIdOld = "";


        public Options(SqlConnection cnn)
        {
            InitializeComponent();
            conn = cnn;
            InitializeAll();
        }

        private void InitializeAll()
        {
            loadDonVi();
            LoadLinhVuc();
            loadNhomSP();
        }

        private void loadDonVi()
        {
            sResult = cmDo.getTable(conn, ref tbDonVi, "Select DonVi from DonVi");

            if (sResult == CommonHeader.NO_ERROR)
            {
                dtgDonVi.DataSource = tbDonVi;
                for (int i = 0; i < tbDonVi.Rows.Count; i++)
                {
                    if (sDonViIdOld == "")
                    {
                        dtgDonVi.CurrentCell = dtgDonVi.Rows[0].Cells[0];
                        sDonViIdOld = tbDonVi.Rows[0][0].ToString();
                        txtMaDonVi.Text = sDonViIdOld;
                        break;
                    }
                    if (sDonViIdOld == tbDonVi.Rows[i][0].ToString())
                    {
                        dtgDonVi.CurrentCell = dtgDonVi.Rows[i].Cells[0];
                        break;
                    }
                }
                    dtgDonVi.Columns[0].Width = dtgDonVi.Width - 30;
            }
            else
            {
                MessageBox.Show("Load data Đơn vị không thành công");
            }
        }


        private void LoadLinhVuc()
        {
            sResult = cmDo.getTable(conn, ref tbLinhVuc, "Select * from LinhVuc");

            if (sResult == CommonHeader.NO_ERROR)
            {
                dtgLinhVuc.DataSource = tbLinhVuc;
                for (int i = 0; i < tbLinhVuc.Rows.Count; i++)
                {
                    if (sLinhVucIDOld == "")
                    {
                        dtgLinhVuc.CurrentCell = dtgLinhVuc.Rows[0].Cells[1];
                        sLinhVucIDOld = tbLinhVuc.Rows[0]["LVID"].ToString();
                        txtLinhVuc.Text = tbLinhVuc.Rows[0]["MoTa"].ToString();
                        break;
                    }
                    if (sLinhVucIDOld == tbLinhVuc.Rows[i]["LVID"].ToString())
                    {
                        dtgLinhVuc.CurrentCell = dtgLinhVuc.Rows[i].Cells[1];
                        sLinhVucIDOld = tbLinhVuc.Rows[i]["LVID"].ToString();
                        txtLinhVuc.Text = tbLinhVuc.Rows[i]["MoTa"].ToString();
                        break;
                    }
                }
                dtgLinhVuc.Columns[1].Width = dtgLinhVuc.Width - 30;
                dtgLinhVuc.Columns[0].Visible = false;
            }
            else
            {
                MessageBox.Show("Load data lĩnh vực không thành công");
            }
        }

        private void loadNhomSP()
        {
            sResult = cmDo.getTable(conn, ref tbNhomSP, "Select * from NhomSanPham");

            if (sResult == CommonHeader.NO_ERROR)
            {
                dtgNhomSP.DataSource = tbNhomSP;
                for (int i = 0; i < tbNhomSP.Rows.Count; i++)
                {
                    if (sNhomSPIdOld == "")
                    {
                        BindingDataNhomSP(0,0);
                        break;
                    }
                    if (sNhomSPIdOld == tbNhomSP.Rows[i]["LVID"].ToString())
                    {
                        BindingDataNhomSP(i,0);
                        break;
                    }
                }
            }
            else
            {
                MessageBox.Show("Load data lĩnh vực không thành công");
            }
        }

        private void BindingDataNhomSP(int iRowIdx, int iColIdx)
        {
            txtMaNhomSP.Text = tbNhomSP.Rows[iRowIdx]["NSPID"].ToString();
            txtNhomSP.Text = tbNhomSP.Rows[iRowIdx]["TenNhom"].ToString();
            txtPhanNhomSp.Text = tbNhomSP.Rows[iRowIdx]["PhanNhom"].ToString();

            sNhomSPIdOld = tbNhomSP.Rows[iRowIdx]["NSPID"].ToString();
            dtgNhomSP.CurrentCell = dtgNhomSP.Rows[iRowIdx].Cells[iColIdx];
        }

        private void dtgDonVi_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }

            txtMaDonVi.Text = tbDonVi.Rows[e.RowIndex]["DonVi"].ToString();
            sDonViIdOld = txtMaDonVi.Text;
        }

        private void btnAddDonVi_Click(object sender, EventArgs e)
        {
            if (txtMaDonVi.Text == "")
            {
                MessageBox.Show("Thông tin không hợp lệ");
                return;
            }

            sResult = cmDo.ExcecuteQuery(conn, "DonVi_add N'" 
                            + txtMaDonVi.Text + "'");
            if (ShowResult(sResult, "Add dữ liệu không thành công"))
            {
                sDonViIdOld = txtMaDonVi.Text;
                loadDonVi();
            }
            else
            {
                sDonViIdOld = "";
            }
        }

        private bool ShowResult(string sRe, string sMsg)
        {
            if (sRe == CommonHeader.NO_ERROR)
            {
                return true;
            }
            else
            {
                MessageBox.Show(sMsg);
                return false;
            }
        }

        private void btnUpdateDonVi_Click(object sender, EventArgs e)
        {
            if (txtMaDonVi.Text == "")
            {
                MessageBox.Show("Thông tin không hợp lệ");
                return;
            }

            if (sDonViIdOld == "")
            {
                MessageBox.Show("Chọn đơn vị muốn update");
                return;
            }

            sResult = cmDo.ExcecuteQuery(conn, "DonVi_Update N'"
                            + txtMaDonVi.Text + "' "
                            + ", N'"+ sDonViIdOld +"'");
            if (ShowResult(sResult, "Update dữ liệu không thành công"))
            {
                sDonViIdOld = txtMaDonVi.Text;
                loadDonVi();
            }
            else
            {
                sDonViIdOld = "";
            }
        }

        private void btnDeleteDonVi_Click(object sender, EventArgs e)
        {
            if (sDonViIdOld == "")
            {
                MessageBox.Show("Chọn đơn vị muốn delete");
                return;
            }

            sResult = cmDo.ExcecuteQuery(conn, "DonVi_Delete N'"
                            + txtMaDonVi.Text + "'");
            if (ShowResult(sResult, "Delete dữ liệu không thành công"))
            {
                sDonViIdOld = "";
                loadDonVi();
            }
        }

        private void dtgLinhVuc_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }

            txtLinhVuc.Text = tbLinhVuc.Rows[e.RowIndex]["MoTa"].ToString();
            sLinhVucIDOld = tbLinhVuc.Rows[e.RowIndex]["LVID"].ToString();
        }

        private void btnAddLinhVuc_Click(object sender, EventArgs e)
        {
            if (txtLinhVuc.Text == "")
            {
                MessageBox.Show("Thông tin không hợp lệ");
                return;
            }

            sResult = cmDo.InsertRecordGetID(conn, ref sLinhVucIDOld,
                    "LinhVuc_add N'" + txtLinhVuc.Text + "'");
            if (ShowResult(sResult, "Add dữ liệu không thành công"))
            {
                LoadLinhVuc();
            }
            else
            {
                sLinhVucIDOld = "";
            }
        }

        private void btnUpdateLinhVuc_Click(object sender, EventArgs e)
        {
            if (txtLinhVuc.Text == "")
            {
                MessageBox.Show("Thông tin không hợp lệ");
                return;
            }

            if (sLinhVucIDOld == "")
            {
                MessageBox.Show("Chọn lĩnh vực muốn update");
                return;
            }

            sResult = cmDo.ExcecuteQuery(conn,
                                "LinhVuc_Update N'" + sLinhVucIDOld + "'"
                                + " , N'" + txtLinhVuc.Text + "' ");
            if (ShowResult(sResult, "Update dữ liệu không thành công"))
            {
                LoadLinhVuc();
            }
        }

        private void btnDeleteLinhVuc_Click(object sender, EventArgs e)
        {
            if (sLinhVucIDOld == "")
            {
                MessageBox.Show("Chọn lĩnh vực muốn delete");
                return;
            }

            sResult = cmDo.ExcecuteQuery(conn, "LinhVuc_Delete N'"
                            + sLinhVucIDOld + "'");
            if (ShowResult(sResult, "Delete dữ liệu không thành công"))
            {
                sLinhVucIDOld = "";
                LoadLinhVuc();
            }
        }

        private void dtgNhomSP_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                BindingDataNhomSP(e.RowIndex, e.ColumnIndex);
            }
        }
    }
}
